﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Cesave.Domain.PermisosModule.Entities;

namespace Cesave.Domain.PermisosModule.Contracts.Cultivos
{
	/// <summary>
	/// 
	/// </summary>
	public interface ICultivoService
		: IDisposable
	{
		/// <summary>
		/// 
		/// </summary>
		/// <param name="cultivo"></param>
		void AddCultivo(Cultivo cultivo);

		/// <summary>
		/// 
		/// </summary>
		/// <param name="cultivo"></param>
		void ChangeCultivo(Cultivo cultivo);

		/// <summary>
		/// 
		/// </summary>
		/// <returns></returns>
		List<Cultivo> FindAllCultivos();

		/// <summary>
		/// 
		/// </summary>
		/// <param name="status"></param>
		/// <returns></returns>
		List<Cultivo> FindCultivosByStatus(bool status = true);

		/// <summary>
		/// Encuentra los cultivos que se pueden mostrar en la expedición
		/// de acuerdo con las especificaciones.
		/// </summary>
		/// <param name="cicloGuid"></param>
		/// <param name="juntaGuid"></param>
		/// <param name="fromDate"></param>
		/// <param name="toDate"></param>
		/// <param name="status"></param>
		/// <returns></returns>
		List<Cultivo> FindCultivosForExpedicion(
			Guid cicloGuid,
			Guid juntaGuid,
			DateTime fromDate,
			DateTime toDate,
			bool status = true
		);

	}
}
